#! /bin/bash
#定义工作路径
WORKDIR=$1
output_dir_rpm="/2209/rebuild-pkgs"

#定义Packages目录的路径
PACKAGES_DIR=$2
#日志文件路径
LOG_FILE=$WORKDIR/logfile.log

#成功和失败的包列表文件路径
SUCCESS_LIST=$WORKDIR/success_list.txt
FAILURE_LIST=$WORKDIR/failure_list.txt


#成功和失败的包列表文件路径
SUCCESS_LIST=$WORKDIR/success_list.txt
FAILURE_LIST=$WORKDIR/failure_list.txt

#清空成功和失败列表文件
>"$SUCCESS_LIST"
>"$FAILURE_LIST"

#计算rpm包的数量
total_rpm_count=$(find "$PACKAGES_DIR" -maxdepth 1 -type f -name "*.rpm" | wc -l)

#初始化计数器
count=0

#定义函数用于修改系统时间
update_date() {
        #获取当前日期并加一天
        tomorrow_date=$(date -d "today + 1 day" "+%Y-%m-%d")
        #生成随机时间
        random_hour=$((RANDOM % 24))
        random_minute=$((RANDOM % 60))
        random_second=$((RANDOM % 60))

        #格式化随机时间
        random_time="$tomorrow_date $random_time"
        #修改系统时间
        date -s "$new_date"
}


# 遍历所有的rpm文件
while IFS= read -r -d '' rpm; do
    # 执行rpmrebuild命令，并将输出和错误重定向到日志文件
    rpmrebuild -p "$rpm" >> "$LOG_FILE" 2>&1
    
    # 检查rpmrebuild命令的退出状态
    if [ $? -eq 0 ]; then
        # 如果命令成功，将包名添加到成功列表
        echo "$rpm: success" >> "$SUCCESS_LIST"
		mv /root/rpmbuild/RPMS/*/* $output_dir_rpm/
    else
        # 如果命令失败，将包名添加到失败列表
        echo "$rpm: failure" >> "$FAILURE_LIST"
    fi
    
    # 增加计数器
    ((count++))

    # 每处理300个包，调用advance_date函数修改系统时间
    if [ $(($count % 500)) -eq 0 ]; then
        advance_date
    fi
	
    
    # 打印进度信息
    echo "Processed $count out of $total_count rpm files"
done < <(find "$PACKAGES_DIR" -maxdepth 1 -type f -name "*.rpm" -print0)

echo "All rpm files have been processed."